#!/bin/bash

# 翼支付金豆脚本 - 一键拉库并部署脚本
# 从Gitee拉取完整项目并自动部署到青龙面板

echo "=== 翼支付金豆0点抢兑话费 - 一键拉库部署工具 ==="
echo "📦 正在从Gitee拉取最新项目..."
echo ""

# 颜色定义
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m' # No Color

# 日志函数
log_info() {
    echo -e "${BLUE}[INFO]${NC} $1"
}

log_success() {
    echo -e "${GREEN}[SUCCESS]${NC} $1"
}

log_warning() {
    echo -e "${YELLOW}[WARNING]${NC} $1"
}

log_error() {
    echo -e "${RED}[ERROR]${NC} $1"
}

# 检查青龙面板环境
check_qinglong() {
    log_info "检查青龙面板环境..."
    if [ ! -d "/ql" ]; then
        log_error "未检测到青龙面板环境 (/ql 目录不存在)"
        echo "请确保青龙面板已正确安装并运行"
        echo "青龙面板安装指南: https://github.com/whyour/qinglong"
        exit 1
    fi
    log_success "青龙面板环境检测成功"
}

# 创建临时目录
create_temp_dir() {
    log_info "创建临时下载目录..."
    TEMP_DIR="/tmp/yifupay_project_$(date +%s)"
    mkdir -p "$TEMP_DIR"
    cd "$TEMP_DIR"
    log_success "临时目录创建完成: $TEMP_DIR"
}

# 拉取项目文件
download_project() {
    log_info "正在从Gitee下载项目文件..."
    
    # 下载主要文件
    local files=(
        "code/deploy.sh"
        "code/yifupay_jindou_exchange.js"
        "code/yifupay_jindou_exchange_enhanced.js"
        "config/environment_variables_example.env"
        "docs/qinglong_deployment.md"
        "docs/yifupay_script_guide.md"
        "README.md"
        "package.json"
    )
    
    for file in "${files[@]}"; do
        log_info "下载: $file"
        local url="https://gitee.com/gebileilaowang/telecom-golden-bean/raw/main/$file"
        if ! wget -q "$url" -O "$(basename "$file")" 2>/dev/null; then
            log_warning "下载失败: $file"
        else
            log_success "下载完成: $file"
        fi
    done
    
    # 下载 .gitignore 文件（如果需要）
    if ! wget -q "https://gitee.com/gebileilaowang/telecom-golden-bean/raw/main/.gitignore" -O ".gitignore" 2>/dev/null; then
        log_warning "无法下载 .gitignore 文件"
    fi
    
    log_success "项目文件下载完成"
}

# 复制文件到青龙面板
deploy_to_qinglong() {
    log_info "部署文件到青龙面板..."
    
    # 创建青龙面板目录
    mkdir -p /ql/scripts/yifupay
    mkdir -p /ql/config/yifupay
    mkdir -p /ql/log/yifupay
    mkdir -p /ql/docs/yifupay
    
    # 复制脚本文件
    if [ -f "yifupay_jindou_exchange_enhanced.js" ]; then
        cp yifupay_jindou_exchange_enhanced.js /ql/scripts/yifupay/
        chmod +x /ql/scripts/yifupay/yifupay_jindou_exchange_enhanced.js
        log_success "复制增强版脚本到: /ql/scripts/yifupay/yifupay_jindou_exchange_enhanced.js"
    fi
    
    if [ -f "yifupay_jindou_exchange.js" ]; then
        cp yifupay_jindou_exchange.js /ql/scripts/yifupay/
        chmod +x /ql/scripts/yifupay/yifupay_jindou_exchange.js
        log_success "复制基础版脚本到: /ql/scripts/yifupay/yifupay_jindou_exchange.js"
    fi
    
    # 复制配置文件
    if [ -f "environment_variables_example.env" ]; then
        cp environment_variables_example.env /ql/config/yifupay/
        log_success "复制配置模板到: /ql/config/yifupay/environment_variables_example.env"
    fi
    
    # 复制文档
    if [ -f "qinglong_deployment.md" ]; then
        cp qinglong_deployment.md /ql/docs/yifupay/
    fi
    
    if [ -f "yifupay_script_guide.md" ]; then
        cp yifupay_script_guide.md /ql/docs/yifupay/
    fi
    
    if [ -f "README.md" ]; then
        cp README.md /ql/docs/yifupay/
    fi
}

# 创建定时任务
create_cron_job() {
    log_info "创建定时任务..."
    
    # 检查任务是否已存在
    if crontab -l 2>/dev/null | grep -q "yifupay_jindou_exchange_enhanced.js"; then
        log_warning "定时任务已存在，跳过创建"
        return
    fi
    
    # 添加定时任务（每天0点执行）
    (crontab -l 2>/dev/null; echo "0 0 * * * cd /ql && node /ql/scripts/yifupay/yifupay_jindou_exchange_enhanced.js >> /ql/log/yifupay/execution.log 2>&1") | crontab -
    
    log_success "定时任务创建完成（每天0点执行）"
}

# 安装依赖
install_dependencies() {
    log_info "检查并安装依赖..."
    
    if command -v npm &> /dev/null; then
        cd /ql
        npm install node-fetch@2 2>/dev/null || echo "依赖安装完成或已存在"
        log_success "依赖检查完成"
    else
        log_warning "未检测到npm，请手动安装node-fetch"
    fi
}

# 显示配置说明
show_config_guide() {
    echo ""
    log_success "=== 部署完成！ ==="
    echo ""
    echo -e "${YELLOW}📋 接下来的配置步骤：${NC}"
    echo ""
    echo "1. 编辑配置文件:"
    echo "   vim /ql/config/yifupay/environment_variables_example.env"
    echo ""
    echo "2. 将配置变量添加到青龙面板环境变量中:"
    echo "   - 在青龙面板'环境变量'页面添加以下变量:"
    echo "   - YIFUPAY_PHONE=你的手机号"
    echo "   - YIFUPAY_PASSWORD=你的密码"
    echo "   - YIFUPAY_EXCHANGE_AMOUNTS=5,10,20"
    echo "   - YIFUPAY_MIN_JINDOU=100"
    echo ""
    echo "3. 测试运行脚本:"
    echo "   node /ql/scripts/yifupay/yifupay_jindou_exchange_enhanced.js"
    echo ""
    echo "4. 查看执行日志:"
    echo "   tail -f /ql/log/yifupay/execution.log"
    echo ""
    echo "📖 详细文档位置:"
    echo "- /ql/docs/yifupay/qinglong_deployment.md"
    echo "- /ql/docs/yifupay/yifupay_script_guide.md"
    echo "- /ql/docs/yifupay/README.md"
    echo ""
    echo -e "${YELLOW}⚠️  重要提醒：${NC}"
    echo "- 请妥善保管您的账号密码"
    echo "- 建议先在测试环境验证功能"
    echo "- 定期检查脚本执行状态"
    echo ""
}

# 清理临时文件
cleanup() {
    log_info "清理临时文件..."
    cd /
    rm -rf "$TEMP_DIR"
    log_success "清理完成"
}

# 主函数
main() {
    echo "🚀 开始一键拉库部署..."
    echo ""
    
    # 检查权限
    if [ "$EUID" -ne 0 ]; then
        log_warning "建议使用sudo运行此脚本以获得完整权限"
        echo "尝试继续执行..."
    fi
    
    # 执行部署步骤
    check_qinglong
    create_temp_dir
    download_project
    deploy_to_qinglong
    install_dependencies
    create_cron_job
    show_config_guide
    cleanup
    
    echo ""
    log_success "🎉 一键拉库部署完成！"
    echo "现在您可以开始配置和使用翼支付金豆脚本了。"
}

# 错误处理
trap 'log_error "部署过程中发生错误，脚本已停止"; cleanup; exit 1' ERR

# 显示帮助信息
if [[ "$1" == "-h" || "$1" == "--help" ]]; then
    echo "翼支付金豆脚本 - 一键拉库部署工具"
    echo ""
    echo "使用方法:"
    echo "  sudo bash $0      # 执行完整部署"
    echo "  bash $0 --help    # 显示帮助信息"
    echo ""
    echo "功能:"
    echo "  ✓ 从Gitee自动拉取项目文件"
    echo "  ✓ 自动部署到青龙面板"
    echo "  ✓ 创建定时任务"
    echo "  ✓ 安装依赖"
    echo "  ✓ 提供配置指导"
    echo ""
    exit 0
fi

# 执行主函数
main "$@"